// pages/goods_detail/goods_detail.js
// 引入用来发送请求的方法
import{request} from "../../request/index.js"
/**
 * 点击轮播图预览大图功能
 *  * 给轮播图绑定点击事件
 *  * 调用了小程序的API previewImage
 */

/**
 * 点击加入购物车
 *  * 绑定点击事件
 *  * 获取缓存中的购物车数据 数组格式存储
 *  * 判断 当前商品是否存在于购物车
 *    * 已经存在修改商品数据 执行购物车数量++ 重新把购物车数组填充回缓存中
 *    * 不存在于购物车的数组中 直接给购物车数组添加一个新元素，带上购买数量属性
 *  * 弹出提示
 */

/**
 * 商品收藏
 *   1.页面onShow的时候，加载缓存中的商品收藏的数据
 *   2.判断当前商品是否收藏
 *     * 是：改变页面图标
 *     * 不是：.....
 *   3.点击商品收藏按钮
 *     * 判断该商品是否存在于缓存数组中
 *     * 存在的话，把该商品删除
 *     * 不存在，把商品添加到收藏数组中，存入到缓存中
 */
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsObj:[] //商品详情数据
  },
  //商品对象
  GoodsInfo:{},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const {goods_id}=options;
    this.getGoodsDetail(goods_id);
  },
  //获取商品详情数据
  async getGoodsDetail(goods_id){
    const res=await request({url:'/goods/detail',data:{goods_id}})
    this.GoodsInfo=res;
    // this.GoodsInfo={
    //   goods_name: res.goods_name,
    //   goods_price: res.goods_price,
    //   pics: res.pics,
    //   goods_id: id.goods_id,
    //   num: 0,
    //   isChecked: true
    // };
    this.setData({
      goodsObj:{
        goods_name: res.goods_name,
        goods_price: res.goods_price,
        // iphone部分手机不识别webp图片格式
        // 临时替换
        goods_introduce: res.goods_introduce.replace(/\.webp/g, ".jpg"),
        pics: res.pics
      }
    })
  },
  // 点击轮播图放大预览
  handlePreviewImg(e) {
    // 1.先构造要预览的图片数组
    const urls = this.GoodsInfo.pics.map(item => {
      return item.pics_mid
    })
    // 2.接收传递过来的图片url
    const current = e.currentTarget.dataset.url
    wx.previewImage({
      current, // 当前显示图片的http链接
      urls // 需要预览的图片http链接列表
    })
  },
  //点击加入购物车
  handleCartAdd() {
    // 1.获取缓存中的购物车，转换数组
    let cart = wx.getStorageSync("cart") || [];
    //2.判断商品对象是否存在于购物车,结果是索引
    let index = cart.findIndex(item => {
      //购物车中商品id===购物车页面商品id
      return item.goods_id === this.GoodsInfo.goods_id
    })
    //3.不存在,第一次添加
    if (index === -1) {
      this.GoodsInfo.num = 1;
      this.GoodsInfo.checked = true;
      cart.push(this.GoodsInfo)
      wx.showToast({
        title: '添加购物车成功',
        icon: 'success',
        mask: true
      })
    } else {
     //4.已经存在购物车数据，执行 num++
      cart[index].num++;
      wx.showToast({
        title: '商品数量+1',
        icon: 'success',
        //用户防抖
        mask: true
      })
    }
    wx.setStorageSync("cart", cart);
  },
})